1. Field of the Invention
This invention relates generally to the field of data communications, and more particularly, to the design of bus interfaces.
2. Description of the Related Art
Power distribution in complex systems is often accomplished by distributing a high-voltage, low-current power source to a set of local direct-current to direct-current (DC-to-DC) converters. These converters, typically known as point-of-load (POL) devices, convert the higher voltage to a level more appropriate for the load or multiple loads that require power. Generally, each POL may be configured to generate a different voltage potential or multiple POLs may be configured to generate the same voltage potential. POLs generating the same voltage potential may be designed to drive separate loads. Similarly, two or more POLs may be connected in parallel to drive one or more common loads.
In systems that utilize multiple POL devices, it is common for the POL devices to exchange information in order to implement necessary power management features. Typical power management features may include voltage tracking, load balancing, sequencing, phase spreading, and clock synchronization. With the rising complexity and robustness requirements of many systems, the ability to monitor and control the power distribution sub-system has become increasingly more critical. Traditionally, information exchanged by POL devices has been represented by analog voltage and/or current signals. There are, however, several advantages to representing the exchanged information as digital data that may be transferred across a bus interconnecting all related POL devices. Monitoring of power distribution sub-systems has typically been implemented via a standard digital interface coupling the major components of the power distribution system to a host microprocessor (oftentimes identified as a Local Controller). The digital interface may allow the Local Controller to continuously monitor the health of the power system. It may also control the power system in order to implement system-level features such as standby and sleep modes.
One digital interface that is particularly well suited for such applications is the I2C (Inter-IC) bus. The I2C bus is a multi-master, multi-slave, two-wire bus that offers support for any device on the bus to access any other device. Transactions on the I2C bus typically consist of a start event, a destination slave address, a read/write bit, and a variable number of data bytes. The transactions are generally terminated by a stop event or another start event. The data byte immediately following the destination slave address may be interpreted as a command or tag byte, which identifies the nature and/or type of the packet.
FIG. 1 shows the basic packet structure of an I2C packet 100, which may contain data to be transferred or written to a slave device. Packet 100 may include a start bit “S” 20 signaling the beginning of the communication from the master. This may be followed by a unique slave address byte “ADR” 22, with the most significant bit (MSB) coming first. The subsequent Read/Write bit 24, typically the eighth bit after “S” 22, specifies whether the slave is to receive (typically a ‘0’ value) or to transmit (typically a ‘1’ value). The Read/Write bit 24 may be followed by an acknowledge bit “A” 26 issued by the receiver, acknowledging receipt of the previous byte. Then the transmitter (slave or master, as indicated by the Read/Write bit) may transmit a data byte 34 starting with the MSB. In the example packet of FIG. 1, the slave is to receive and the first byte following the slave address byte 22 is a command byte “CMD” 34 sent by the master. At the end of the byte, the receiver may issue a new “A” 28. This 9-bit pattern may be repeated until all the required bytes have been transmitted, in this case Data1 36 and Data2 38, and acknowledge bit following each byte. In a write transaction, as illustrated in FIG. 1, when the master is done transmitting, it may monitor the last acknowledge bit, that is, “A” 32, then issue a stop condition “P” 40. In a read transaction (slave transmitting), the master may not acknowledge final byte 38, thereby indicating to the slave that the slave's transmission is completed. The master may then issue “P” 40.
FIG. 2 shows a typical configuration in which multiple POL devices 102, 104, and 106 are coupled together via I2C bus 120 comprising data signal (SDA) line 124 and clock signal (SCA) line 122, which also couples a Local Controller 108 and other devices 110, 112, and 114 that are not directly related POL devices 102, 104, and 106. Each of devices 102, 104, 106, 110, 112, and 114 must be responsive to a unique address, which is its slave address. The slave address may be defined for a device or programmed into a device in several possible ways. For example, the address may be “hard wired” into the device by design. Alternatively, the address may be determined by the connections of one or more pins on a device, with the one or more pins dedicated to selecting the address to which the device will respond. In yet another configuration, the device may contain non-volatile memory into which the slave address as well as other configuration information may be programmed during manufacturing or during a configuration operation performed to prepare the device for use in a particular system or application.
During typical operation, Local Controller 108 may address each POL and/or other device by its unique slave address as required, writing control information and reading status and data. FIG. 3 is a simplified illustration of a packet being transferred from Local Controller 108 to POL device 104. Each of the devices on shared I2C bus 120 may receive the packet sent by Local Controller 108. However, only POL device 104 would recognize the address at the start of the packet as its own. POL device 104 would thus respond to the packet initiated by Local Controller 108, receiving or supplying data as required.
FIG. 4 show the basic bus waveforms on the shared SDA (410 and 412), and SCL (414) bus wires. The bus connections of each device connected to the bus are typically of an “open-drain” nature, with an external pull-up device, generally a resistor or current source (not shown), on each shared signal wire. Each device connected to the bus has the ability to drive the signals to a low or logic 0 level or to not drive it at all. If no device is “pulling” the bus low, the external pull-up typically causes the bus signal to remain at a high or logic 1 level. Also illustrated in FIG. 4 are, a transmission start 402, corresponding for example to “S” 20 in FIG. 1, the MSB through LSB of a slave address byte, corresponding for example to “ADR” 22, and acknowledge 404, corresponding for example to “A” 26, followed by a data byte, corresponding for example to Data2 38, and a stop 406, corresponding for example to “P” 40.
Another bus standard, developed after the I2C bus standard, is the SMBus (System Management Bus), which is backward compatible with the I2C bus standard while introducing additional features to support error detection, hazard recovery, and dynamic address assignment among others. It should be noted that both the I2C bus and the SMBus have predefined means for identifying a slave or destination device, but neither has predefined means for identifying the master or source of a bus transaction. The information transfer requirements of several common power management features will now be presented below.
It is a common requirement that the POL devices in a system enable and disable their power outputs in a predefined order, or sequence. This has commonly been referred to as “sequencing”, and is necessary to avoid both temporary and permanent interference with the operation of the system. The sequencing is traditionally accomplished by connecting a “POWER GOOD” (PG) output pin of each POL device to an “ENABLE” (EN) input pin of the next POL device to be enabled. This is illustrated in FIG. 5, where the PG pin of POL device 202 is coupled to the EN pin of POL device 204, while the PG pin of POL device 204 is coupled to the EN pin of POL device 206. Each POL device may assert its PG pin when the output of the POL device has met some predefined condition or reached some predefined state. This event may then allow the next POL device to enable its output followed by asserting its own PG pin.
As an alternative to sequencing, some systems may require that multiple POL devices enable their outputs simultaneously, while also operating to have their outputs maintain a predefined relationship with one another. This has commonly been referred to as “voltage tracking”. For example, a given POL device may be required to never allow its output to exceed that of another designated POL device as the POL devices ramp their output voltages. FIG. 6 shows a diagram featuring the respective output voltage 612 of a first POL device, considered the master device, and the respective voltage 614 of a second POL device, considered the slave device, as a function of time. As illustrated, the master device and slave device voltage outputs, 612 and 614, respectively, are enabled simultaneously, with only a nominal delay 616 due to the communication delay that exists between the two devices. As also illustrated, the master device output 612 and the slave device output 614 maintain different values in a predefined manner. Traditionally, the analog output of the master POL device has been connected to an analog input of the slave POL device in order to implement the tracking feature.
In digital implementations of power conversion devices, the output voltage generated during turn-on and turn-off may be controlled by a precision digital-to-analog converter driven by a digital ramp generator. If the oscillator used to drive the ramp generator is precise, and the POL devices are enabled simultaneously, their outputs may ramp together in a predictable fashion. This may provide a means for voltage tracking without the need for additional bus traffic, and is often referred to as “open-loop” voltage tracking (as described in the above paragraph). However, mismatch between the oscillators configured within different POL devices may result in the turn-on and turn-off ramps of the different POL devices to change at different rates, and thereby introduce a mismatch between the POL devices' respective output voltages.
It is often more practical to provide a large amount of supply current to a load by connecting two or more POL devices in parallel, with each POL device intended to provide a roughly equal share of the total load current. Due to possible systematic and/or random mismatches between POL devices, the respective currents provided by different interconnected POL devices may vary considerably. Various methods, such as current balancing and load sharing have typically been used to correct such current mismatches.
Typically, current balancing is accomplished by allowing the POL devices to exchange information about their respective load currents. For example, if a master POL device in the group passes its measured load current to the other POL devices in the group, the other POL devices may adjust their own respective currents such that they match the value of the current they have received from the master POL device. In addition, by virtue of the slave POL devices' outputs being connected in parallel, the master POL device's output must decrease as the slave devices increase their respective output currents, in order to maintain a constant total load current. Other methods may allow for all POL devices to pass their respective measured load currents to other members of the group. In all, the communication between POL devices for maintaining current balance has traditionally been accomplished via one or more shared analog signals.
Additionally, in order to reduce both the input and output voltage ripple, groups of switching regulators, specifically POL devices in this case, are often required to spread their switching times across the switch period such that the respective times at which the POL devices are charging their respective output capacitors (from the input bus) have minimum overlap with one another. This is generally referred to as “phase spreading”. Phase spreading has typically been accomplished by configuring each POL device to switch at a set, predefined position within the switching period.
Other corresponding issues related to the prior art will become apparent to one skilled in the art after comparing such prior art with the present invention as described herein.